package cl.gob.minvu.catastro.managedBean;

import java.io.Serializable;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.servlet.http.HttpSession;

import org.jboss.logging.Logger;

import cl.gob.minvu.catastro.ejb.UsuarioEJBRemote;
import cl.gob.minvu.catastro.model.Usuario;
import cl.gob.minvu.catastro.util.ManagedBeanUtil;
import cl.gob.minvu.catastro.util.ServletUtil;

/**
 * @author psep
 * 
 */
@ManagedBean(name = "loginBean")
@SessionScoped
public class LoginBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@SuppressWarnings("unused")
	private static final Logger logger = Logger.getLogger(LoginBean.class);

	@EJB
	private UsuarioEJBRemote usuarioEJB;
	
	private Usuario usuario;
	private Boolean root;

	public LoginBean() {
		this.usuario = new Usuario();
		this.root = false;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
	public Boolean getRoot() {
		return root;
	}

	public void setRoot(Boolean root) {
		this.root = root;
	}

	/**
	 * @return
	 */
	public String goUsuarios() {
		return ManagedBeanUtil.go("usuarios");
	}
	
	/**
	 * @return
	 */
	public String goIndex() {
		return ManagedBeanUtil.go("index");
	}
	
	/**
	 * @return
	 */
	public String goEncuestadores() {
		return ManagedBeanUtil.go("encuestadores");
	}
	
	/**
	 * @return
	 */
	public String goFichas() {
		return ManagedBeanUtil.go("fichas");
	}

	/**
	 * @return
	 */
	public String validaLoginAction() {
		if (this.usuario.getUsername() != null && this.usuario.getPassword() != null
				&& !this.usuario.getUsername().trim().equals("")
				&& !this.usuario.getPassword().equals("")) {
			Usuario userValido = this.usuarioEJB.find(this.usuario);
			
			if (userValido == null) {
				ManagedBeanUtil.getMessageERROR("Error en usuario y/o password");
				return null;				
			} else {
				this.usuario = userValido;
				HttpSession session = ServletUtil.getSession();
				session.setAttribute("username", this.usuario.getUsername());
				session.setAttribute("userid", this.usuario.getIdusuario());
				session.setAttribute("userperfilid", this.usuario.getPerfil().getIdperfil());
				
				if (this.usuario.getPerfil().getIdperfil() == 1) {
					this.root = true;
				} else {
					this.root = false;
				}
				
				return "index?faces-redirect=true";
			}
			
		} else {
			ManagedBeanUtil.getMessageERROR("Debe ingresar usuario y password");
			return null;
		}
	}

	/**
	 * @return
	 */
	public String logoutAction() {
		HttpSession session = ServletUtil.getSession();
		session.invalidate();
		return "login?faces-redirect=true";
	}

}